Skip to content

Conversation

@jeis4wpi
Copy link

@jeis4wpi jeis4wpi commented Jan 12, 2026

Description

Issue

Propose fix a typo for stricly to strictly

Is this helpful?

Checklist

  • I am familiar with the Contributing Guidelines.
  • Testing
    • New or existing tests cover these changes
    • Added tests
    • Created an issue to follow-up
    • NA
  • Documentation
    • The documentation is up to date with these changes
    • Added new documentation
    • NA

Summary by CodeRabbit

  • Style
    • Fixed spelling and grammar in assertion/error messages, diagnostics and comments across routing, linear programming, CUDA kernels and tests to improve clarity and consistency in runtime messages and logs; no behavioral, control-flow, or public API changes.

✏️ Tip: You can customize this high-level summary in your review settings.

@jeis4wpi jeis4wpi requested a review from a team as a code owner January 12, 2026 17:31
@jeis4wpi jeis4wpi requested review from hlinsen and kaatish January 12, 2026 17:31
@copy-pr-bot
Copy link

copy-pr-bot bot commented Jan 12, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai
Copy link

coderabbitai bot commented Jan 12, 2026

📝 Walkthrough

Walkthrough

Spelling and wording corrections were applied to comments and assertion/error message strings across multiple C++ source and header files; no changes to control flow, logic, or public API signatures.

Changes

Cohort / File(s) Summary
Benchmarks & Parser
benchmarks/linear_programming/cuopt/initial_problem_check.hpp, cpp/libmps_parser/src/mps_parser.cpp
Fixed comment spelling ("stricly" → "strictly"); updated header year ranges.
Linear Programming (PDLP)
cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu, cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
Corrected assertion/comment typos ("stricly" → "strictly", "smalled" → "smaller"); updated header year.
Routing — GES
cpp/src/routing/ges/compute_fragment_ejections.cu, cpp/src/routing/ges/compute_fragment_ejections.cuh, cpp/src/routing/ges/execute_insertion.cu, cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
Fixed multiple assertion message typos ("greated" → "greater", "lenght" → "length", "stricly" → "strictly"); updated SPDX/header years.
Routing — Node & Route
cpp/src/routing/node/pdp_node.cuh, cpp/src/routing/route/route.cuh
Numerous assertion/error message spelling and punctuation fixes ("stricly" → "strictly", "greated" → "greater", etc.); header year updates.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Propose fix a typo' is vague and non-descriptive; it does not specify which typo is being fixed or which files are affected. Use a more specific title that identifies the nature of the typo fix, such as 'Fix spelling: correct stricly to strictly' or mention the key areas affected by the changes.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings


📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 534ef68 and 274c045.

📒 Files selected for processing (9)
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/libmps_parser/src/mps_parser.cpp
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
✅ Files skipped from review due to trivial changes (2)
  • cpp/libmps_parser/src/mps_parser.cpp
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
🚧 Files skipped from review as they are similar to previous changes (4)
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{cu,cuh}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cu,cuh}: Every CUDA kernel launch and memory operation must have error checking with CUDA_CHECK or equivalent verification
Avoid reinventing functionality already available in Thrust, CCCL, or RMM libraries; prefer standard library utilities over custom implementations

Files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
**/*.cu

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.cu: Verify race conditions and correctness of GPU kernel shared memory, atomics, and warp-level operations
Detect inefficient GPU kernel launches with low occupancy or poor memory access patterns; optimize for coalesced memory access and minimize warp divergence in hot paths

Files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
**/*.{cu,cuh,cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cu,cuh,cpp,hpp,h}: Track GPU device memory allocations and deallocations to prevent memory leaks; ensure cudaMalloc/cudaFree balance and cleanup of streams/events
Validate algorithm correctness in optimization logic: simplex pivots, branch-and-bound decisions, routing heuristics, and constraint/objective handling must produce correct results
Check numerical stability: prevent overflow/underflow, precision loss, division by zero/near-zero, and use epsilon comparisons for floating-point equality checks
Validate correct initialization of variable bounds, constraint coefficients, and algorithm state before solving; ensure reset when transitioning between algorithm phases (presolve, simplex, diving, crossover)
Ensure variables and constraints are accessed from the correct problem context (original vs presolve vs folded vs postsolve); verify index mapping consistency across problem transformations
For concurrent CUDA operations (barriers, async operations), explicitly create and manage dedicated streams instead of reusing the default stream; document stream lifecycle
Eliminate unnecessary host-device synchronization (cudaDeviceSynchronize) in hot paths that blocks GPU pipeline; use streams and events for async execution
Assess algorithmic complexity for large-scale problems (millions of variables/constraints); ensure O(n log n) or better complexity, not O(n²) or worse
Verify correct problem size checks before expensive GPU/CPU operations; prevent resource exhaustion on oversized problems
Identify assertions with overly strict numerical tolerances that fail on legitimate degenerate/edge cases (near-zero pivots, singular matrices, empty problems)
Ensure race conditions are absent in multi-GPU code and multi-threaded server implementations; verify proper synchronization of shared state
Refactor code duplication in solver components (3+ occurrences) into shared utilities; for GPU kernels, use templated device functions to avoid duplication
Check that hard-coded GPU de...

Files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
**/*.{cu,cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

Avoid inappropriate use of exceptions in performance-critical GPU operation paths; prefer error codes or CUDA error checking for latency-sensitive code

Files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
🧠 Learnings (14)
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Refactor code duplication in solver components (3+ occurrences) into shared utilities; for GPU kernels, use templated device functions to avoid duplication

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Validate algorithm correctness in optimization logic: simplex pivots, branch-and-bound decisions, routing heuristics, and constraint/objective handling must produce correct results

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Verify correct problem size checks before expensive GPU/CPU operations; prevent resource exhaustion on oversized problems

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Verify error propagation from CUDA to user-facing APIs is complete; ensure CUDA errors are caught and mapped to meaningful user error codes

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Validate correct initialization of variable bounds, constraint coefficients, and algorithm state before solving; ensure reset when transitioning between algorithm phases (presolve, simplex, diving, crossover)

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Check that hard-coded GPU device IDs and resource limits are made configurable; abstract multi-backend support for different CUDA versions

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Track GPU device memory allocations and deallocations to prevent memory leaks; ensure cudaMalloc/cudaFree balance and cleanup of streams/events

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Ensure race conditions are absent in multi-GPU code and multi-threaded server implementations; verify proper synchronization of shared state

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.cu : Verify race conditions and correctness of GPU kernel shared memory, atomics, and warp-level operations

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Eliminate unnecessary host-device synchronization (cudaDeviceSynchronize) in hot paths that blocks GPU pipeline; use streams and events for async execution

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cpp,hpp,h} : Avoid inappropriate use of exceptions in performance-critical GPU operation paths; prefer error codes or CUDA error checking for latency-sensitive code

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Ensure test isolation: prevent GPU state, cached memory, and global variables from leaking between test cases; verify each test independently initializes its environment

Applied to files:

  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Identify assertions with overly strict numerical tolerances that fail on legitimate degenerate/edge cases (near-zero pivots, singular matrices, empty problems)

Applied to files:

  • cpp/src/routing/route/route.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : For concurrent CUDA operations (barriers, async operations), explicitly create and manage dedicated streams instead of reusing the default stream; document stream lifecycle

Applied to files:

  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
🔇 Additional comments (3)
cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu (1)

3-3: LGTM!

Copyright year update and typo fix ("stricly" → "strictly") in the assertion message are correct.

Also applies to: 126-126

cpp/src/routing/ges/compute_fragment_ejections.cu (1)

3-3: LGTM!

Copyright year update and typo fixes are correct:

  • "smalled" → "smaller"
  • "greated" → "greater"
  • "stricly" → "strictly"

Also applies to: 50-50, 57-58

cpp/src/routing/route/route.cuh (1)

3-3: LGTM!

Copyright year update and consistent typo corrections across all assertion messages:

  • "greated" → "greater" (4 occurrences)
  • "stricly" → "strictly" (6 occurrences)

All fixes are accurate and improve code quality.

Also applies to: 268-268, 297-297, 342-342, 385-385, 594-594, 616-616, 631-631, 638-638, 741-741, 762-762

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu:
- Around line 1784-1786: The assertion message in cuopt_assert for the condition
involving index_start_primal and index_end_primal contains a typo: change the
message string in the cuopt_assert call that currently reads "Start should be
strictly smalled than end" to "Start should be strictly smaller than end"
(locate the cuopt_assert call referencing index_start_primal and
index_end_primal and update only the error string).
🧹 Nitpick comments (1)
cpp/src/routing/ges/compute_fragment_ejections.cu (1)

57-58: Typo fix on line 58 is correct.

The "stricly" → "strictly" correction is good, and the message now correctly matches the check (> 0 validates strictly positive).

However, line 57 still contains a typo: "greated" should be "greater". Consider fixing it in this PR for consistency.

Suggested fix for line 57
-  cuopt_assert(route_length > 1, "Route length should be greated than one");
+  cuopt_assert(route_length > 1, "Route length should be greater than one");
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d04715b and 38517c4.

📒 Files selected for processing (10)
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/libmps_parser/src/mps_parser.cpp
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{cu,cuh}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cu,cuh}: Every CUDA kernel launch and memory operation must have error checking with CUDA_CHECK or equivalent verification
Avoid reinventing functionality already available in Thrust, CCCL, or RMM libraries; prefer standard library utilities over custom implementations

Files:

  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
**/*.cu

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.cu: Verify race conditions and correctness of GPU kernel shared memory, atomics, and warp-level operations
Detect inefficient GPU kernel launches with low occupancy or poor memory access patterns; optimize for coalesced memory access and minimize warp divergence in hot paths

Files:

  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
**/*.{cu,cuh,cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cu,cuh,cpp,hpp,h}: Track GPU device memory allocations and deallocations to prevent memory leaks; ensure cudaMalloc/cudaFree balance and cleanup of streams/events
Validate algorithm correctness in optimization logic: simplex pivots, branch-and-bound decisions, routing heuristics, and constraint/objective handling must produce correct results
Check numerical stability: prevent overflow/underflow, precision loss, division by zero/near-zero, and use epsilon comparisons for floating-point equality checks
Validate correct initialization of variable bounds, constraint coefficients, and algorithm state before solving; ensure reset when transitioning between algorithm phases (presolve, simplex, diving, crossover)
Ensure variables and constraints are accessed from the correct problem context (original vs presolve vs folded vs postsolve); verify index mapping consistency across problem transformations
For concurrent CUDA operations (barriers, async operations), explicitly create and manage dedicated streams instead of reusing the default stream; document stream lifecycle
Eliminate unnecessary host-device synchronization (cudaDeviceSynchronize) in hot paths that blocks GPU pipeline; use streams and events for async execution
Assess algorithmic complexity for large-scale problems (millions of variables/constraints); ensure O(n log n) or better complexity, not O(n²) or worse
Verify correct problem size checks before expensive GPU/CPU operations; prevent resource exhaustion on oversized problems
Identify assertions with overly strict numerical tolerances that fail on legitimate degenerate/edge cases (near-zero pivots, singular matrices, empty problems)
Ensure race conditions are absent in multi-GPU code and multi-threaded server implementations; verify proper synchronization of shared state
Refactor code duplication in solver components (3+ occurrences) into shared utilities; for GPU kernels, use templated device functions to avoid duplication
Check that hard-coded GPU de...

Files:

  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
  • cpp/libmps_parser/src/mps_parser.cpp
**/*.{cu,cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

Avoid inappropriate use of exceptions in performance-critical GPU operation paths; prefer error codes or CUDA error checking for latency-sensitive code

Files:

  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/libmps_parser/src/mps_parser.cpp
**/*.{h,hpp,py}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

Verify C API does not break ABI stability (no struct layout changes, field reordering); maintain backward compatibility in Python and server APIs with deprecation warnings

Files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
**/*.{cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cpp,hpp,h}: Check for unclosed file handles when reading MPS/QPS problem files; ensure RAII patterns or proper cleanup in exception paths
Validate input sanitization to prevent buffer overflows and resource exhaustion attacks; avoid unsafe deserialization of problem files
Prevent thread-unsafe use of global and static variables; use proper mutex/synchronization in server code accessing shared solver state

Files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/libmps_parser/src/mps_parser.cpp
🧠 Learnings (16)
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Validate algorithm correctness in optimization logic: simplex pivots, branch-and-bound decisions, routing heuristics, and constraint/objective handling must produce correct results

Applied to files:

  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Identify assertions with overly strict numerical tolerances that fail on legitimate degenerate/edge cases (near-zero pivots, singular matrices, empty problems)

Applied to files:

  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Validate correct initialization of variable bounds, constraint coefficients, and algorithm state before solving; ensure reset when transitioning between algorithm phases (presolve, simplex, diving, crossover)

Applied to files:

  • cpp/src/routing/route/route.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Verify error propagation from CUDA to user-facing APIs is complete; ensure CUDA errors are caught and mapped to meaningful user error codes

Applied to files:

  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Verify correct problem size checks before expensive GPU/CPU operations; prevent resource exhaustion on oversized problems

Applied to files:

  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Refactor code duplication in solver components (3+ occurrences) into shared utilities; for GPU kernels, use templated device functions to avoid duplication

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cpp,hpp,h} : Avoid inappropriate use of exceptions in performance-critical GPU operation paths; prefer error codes or CUDA error checking for latency-sensitive code

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Ensure variables and constraints are accessed from the correct problem context (original vs presolve vs folded vs postsolve); verify index mapping consistency across problem transformations

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh} : Avoid reinventing functionality already available in Thrust, CCCL, or RMM libraries; prefer standard library utilities over custom implementations

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Check that hard-coded GPU device IDs and resource limits are made configurable; abstract multi-backend support for different CUDA versions

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Write tests validating numerical correctness of optimization results (not just 'runs without error'); test degenerate cases (infeasible, unbounded, empty, singleton problems)

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Check numerical stability: prevent overflow/underflow, precision loss, division by zero/near-zero, and use epsilon comparisons for floating-point equality checks

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Assess algorithmic complexity for large-scale problems (millions of variables/constraints); ensure O(n log n) or better complexity, not O(n²) or worse

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Test with free variables, singleton problems, and extreme problem dimensions near resource limits to validate edge case handling

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cpp,hpp,h} : Check for unclosed file handles when reading MPS/QPS problem files; ensure RAII patterns or proper cleanup in exception paths

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/libmps_parser/src/mps_parser.cpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Add tests for algorithm phase transitions: verify correct initialization of bounds and state when transitioning from presolve to simplex to diving to crossover

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
🔇 Additional comments (15)
benchmarks/linear_programming/cuopt/initial_problem_check.hpp (1)

82-82: LGTM!

Typo fix is correct: "stricly" → "strictly".

cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh (1)

130-130: LGTM!

Typo fix is correct: "stricly" → "strictly".

cpp/libmps_parser/src/mps_parser.cpp (1)

857-860: LGTM!

Typo fix is correct: "stricly" → "strictly".

cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu (3)

1327-1327: LGTM!

Typo fix is correct: "stricly" → "strictly".


1345-1345: LGTM!

Typo fix is correct: "stricly" → "strictly".


1525-1525: LGTM!

Typo fix is correct: "stricly" → "strictly".

cpp/src/routing/ges/compute_fragment_ejections.cuh (5)

53-53: LGTM!

Typo fix is correct: "lenght" → "length".


76-76: LGTM!

Typo fix is correct: "stricly" → "strictly".


109-109: LGTM!

Typo fix is correct: "lenght" → "length".


153-153: LGTM!

Typo fix is correct: "stricly" → "strictly".


164-164: LGTM!

Typo fix is correct: "estrictly" → "strictly".

cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu (1)

126-126: LGTM! Typo corrected.

The spelling correction from "stricly" to "strictly" improves the assertion message quality without affecting functionality.

cpp/src/routing/ges/execute_insertion.cu (1)

162-162: LGTM! Typo corrected.

The spelling correction from "stricly" to "strictly" improves the assertion message quality without affecting functionality.

cpp/src/routing/route/route.cuh (1)

594-594: LGTM! Typos corrected consistently.

All spelling corrections from "stricly" to "strictly" across multiple assertion messages improve code quality without affecting functionality. The fixes are applied consistently throughout route operations (ejection, copying, forward/backward computation).

Also applies to: 616-616, 631-631, 638-638, 741-741, 762-762

cpp/src/routing/node/pdp_node.cuh (1)

26-32: Typo fixes look good.

The spelling corrections from "stricly" to "strictly" are correct.

Optional observation: The assertion messages say "strictly positive" but the checks are >= 0, which validates non-negative values (including zero). Mathematically, "strictly positive" means > 0. This is a pre-existing semantic mismatch—consider rewording to "non-negative" or adjusting the checks if zero is indeed invalid.

Also applies to: 42-46

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In @cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu:
- Around line 1784-1786: The assertion message in cuopt_assert (call:
cuopt_assert(index_start_primal <= index_end_primal, "Start should be strictly
smalled than end")) contains a typo: replace "smalled" with "smaller" so the
message reads "Start should be strictly smaller than end"; update the string
literal used in the cuopt_assert invocation accordingly to correct the typo.

In @cpp/src/routing/ges/compute_fragment_ejections.cuh:
- Line 109: Fix the typo in the assertion message used with cuopt_assert: change
the message string from "Route lenght should be strictly positive" to "Route
length should be strictly positive" (and apply the same correction for the
identical typo referenced at line 53); update the message passed to cuopt_assert
in compute_fragment_ejections.cuh so it uses "length" consistently.
- Line 53: The assertion message in the cuopt_assert call inside
compute_fragment_ejections (the call invoking cuopt_assert(route_length >= 1,
"...")) still contains a typo: change "Route lenght should be strictly positive"
to "Route length should be strictly positive" by correcting "lenght" → "length"
while keeping the existing "strictly" fix.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4010f43 and bb66bba.

📒 Files selected for processing (10)
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/libmps_parser/src/mps_parser.cpp
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/route/route.cuh
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
🚧 Files skipped from review as they are similar to previous changes (6)
  • cpp/tests/linear_programming/utilities/pdlp_test_utilities.cuh
  • cpp/src/routing/ges/compute_fragment_ejections.cu
  • cpp/src/routing/ges/lexicographic_search/lexicographic_search.cu
  • cpp/src/routing/node/pdp_node.cuh
  • cpp/src/routing/ges/execute_insertion.cu
  • cpp/src/routing/route/route.cuh
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{cu,cuh,cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cu,cuh,cpp,hpp,h}: Track GPU device memory allocations and deallocations to prevent memory leaks; ensure cudaMalloc/cudaFree balance and cleanup of streams/events
Validate algorithm correctness in optimization logic: simplex pivots, branch-and-bound decisions, routing heuristics, and constraint/objective handling must produce correct results
Check numerical stability: prevent overflow/underflow, precision loss, division by zero/near-zero, and use epsilon comparisons for floating-point equality checks
Validate correct initialization of variable bounds, constraint coefficients, and algorithm state before solving; ensure reset when transitioning between algorithm phases (presolve, simplex, diving, crossover)
Ensure variables and constraints are accessed from the correct problem context (original vs presolve vs folded vs postsolve); verify index mapping consistency across problem transformations
For concurrent CUDA operations (barriers, async operations), explicitly create and manage dedicated streams instead of reusing the default stream; document stream lifecycle
Eliminate unnecessary host-device synchronization (cudaDeviceSynchronize) in hot paths that blocks GPU pipeline; use streams and events for async execution
Assess algorithmic complexity for large-scale problems (millions of variables/constraints); ensure O(n log n) or better complexity, not O(n²) or worse
Verify correct problem size checks before expensive GPU/CPU operations; prevent resource exhaustion on oversized problems
Identify assertions with overly strict numerical tolerances that fail on legitimate degenerate/edge cases (near-zero pivots, singular matrices, empty problems)
Ensure race conditions are absent in multi-GPU code and multi-threaded server implementations; verify proper synchronization of shared state
Refactor code duplication in solver components (3+ occurrences) into shared utilities; for GPU kernels, use templated device functions to avoid duplication
Check that hard-coded GPU de...

Files:

  • cpp/libmps_parser/src/mps_parser.cpp
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
**/*.{cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cpp,hpp,h}: Check for unclosed file handles when reading MPS/QPS problem files; ensure RAII patterns or proper cleanup in exception paths
Validate input sanitization to prevent buffer overflows and resource exhaustion attacks; avoid unsafe deserialization of problem files
Prevent thread-unsafe use of global and static variables; use proper mutex/synchronization in server code accessing shared solver state

Files:

  • cpp/libmps_parser/src/mps_parser.cpp
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
**/*.{cu,cpp,hpp,h}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

Avoid inappropriate use of exceptions in performance-critical GPU operation paths; prefer error codes or CUDA error checking for latency-sensitive code

Files:

  • cpp/libmps_parser/src/mps_parser.cpp
  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
**/*.{cu,cuh}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.{cu,cuh}: Every CUDA kernel launch and memory operation must have error checking with CUDA_CHECK or equivalent verification
Avoid reinventing functionality already available in Thrust, CCCL, or RMM libraries; prefer standard library utilities over custom implementations

Files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
**/*.cu

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

**/*.cu: Verify race conditions and correctness of GPU kernel shared memory, atomics, and warp-level operations
Detect inefficient GPU kernel launches with low occupancy or poor memory access patterns; optimize for coalesced memory access and minimize warp divergence in hot paths

Files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
**/*.{h,hpp,py}

📄 CodeRabbit inference engine (.github/.coderabbit_review_guide.md)

Verify C API does not break ABI stability (no struct layout changes, field reordering); maintain backward compatibility in Python and server APIs with deprecation warnings

Files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
🧠 Learnings (15)
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Identify assertions with overly strict numerical tolerances that fail on legitimate degenerate/edge cases (near-zero pivots, singular matrices, empty problems)

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Verify error propagation from CUDA to user-facing APIs is complete; ensure CUDA errors are caught and mapped to meaningful user error codes

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Validate correct initialization of variable bounds, constraint coefficients, and algorithm state before solving; ensure reset when transitioning between algorithm phases (presolve, simplex, diving, crossover)

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Validate algorithm correctness in optimization logic: simplex pivots, branch-and-bound decisions, routing heuristics, and constraint/objective handling must produce correct results

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cpp,hpp,h} : Avoid inappropriate use of exceptions in performance-critical GPU operation paths; prefer error codes or CUDA error checking for latency-sensitive code

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Refactor code duplication in solver components (3+ occurrences) into shared utilities; for GPU kernels, use templated device functions to avoid duplication

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Check that hard-coded GPU device IDs and resource limits are made configurable; abstract multi-backend support for different CUDA versions

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Verify correct problem size checks before expensive GPU/CPU operations; prevent resource exhaustion on oversized problems

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
  • cpp/src/routing/ges/compute_fragment_ejections.cuh
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Ensure variables and constraints are accessed from the correct problem context (original vs presolve vs folded vs postsolve); verify index mapping consistency across problem transformations

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Write tests validating numerical correctness of optimization results (not just 'runs without error'); test degenerate cases (infeasible, unbounded, empty, singleton problems)

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Check numerical stability: prevent overflow/underflow, precision loss, division by zero/near-zero, and use epsilon comparisons for floating-point equality checks

Applied to files:

  • cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cu,cuh,cpp,hpp,h} : Assess algorithmic complexity for large-scale problems (millions of variables/constraints); ensure O(n log n) or better complexity, not O(n²) or worse

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Test with free variables, singleton problems, and extreme problem dimensions near resource limits to validate edge case handling

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*.{cpp,hpp,h} : Check for unclosed file handles when reading MPS/QPS problem files; ensure RAII patterns or proper cleanup in exception paths

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
📚 Learning: 2025-11-25T10:20:49.822Z
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2025-11-25T10:20:49.822Z
Learning: Applies to **/*test*.{cpp,cu,py} : Add tests for algorithm phase transitions: verify correct initialization of bounds and state when transitioning from presolve to simplex to diving to crossover

Applied to files:

  • benchmarks/linear_programming/cuopt/initial_problem_check.hpp
🔇 Additional comments (7)
benchmarks/linear_programming/cuopt/initial_problem_check.hpp (1)

82-82: LGTM!

The typo fix from "stricly" to "strictly" in the comment is correct.

cpp/libmps_parser/src/mps_parser.cpp (1)

857-861: LGTM!

The typo fix from "stricly" to "strictly" in the comment is correct.

cpp/src/routing/ges/compute_fragment_ejections.cuh (2)

76-76: LGTM!

The typo fix from "stricly" to "strictly" is correct.


153-164: LGTM!

The typo fixes from "stricly" to "strictly" on lines 153 and 164 are correct.

cpp/src/linear_programming/restart_strategy/pdlp_restart_strategy.cu (3)

1327-1327: LGTM!

The typo fix from "stricly" to "strictly" is correct.


1345-1345: LGTM!

The typo fix from "stricly" to "strictly" is correct.


1525-1525: LGTM!

The typo fix from "stricly" to "strictly" is correct.

Signed-off-by: John E <jeis4wpi@outlook.com>

add fix for greated to greater additional typo

Signed-off-by: John E <jeis4wpi@outlook.com>

fix lenght also

Signed-off-by: John E <jeis4wpi@outlook.com>

fix smalled

Signed-off-by: John E <jeis4wpi@outlook.com>
Copy link
Contributor

@hlinsen hlinsen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@hlinsen hlinsen added doc Improvements or additions to documentation non-breaking Introduces a non-breaking change labels Jan 12, 2026
@rgsl888prabhu
Copy link
Collaborator

/ok to test 534ef68

@rgsl888prabhu
Copy link
Collaborator

/ok to test 274c045

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc Improvements or additions to documentation non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants